/**   
* @Title: RouteHistoryImpl.java 
* @author zengshuai shi   
* @date 2015年8月20日 上午10:14:18 
*/
package com.shanghaionstar.sqlite;

import android.content.Context;
import android.text.TextUtils;

import com.onstar.cn.common.util.DeviceUtil;
import com.onstar.cn.map.common.PoiItemInfo;
import com.onstar.cn.sqlite.entities.RouteHistory;
import com.onstar.cn.sqlite.xutil.db.sqlite.Selector;
import com.onstar.cn.sqlite.xutil.exception.DbException;

import java.util.ArrayList;
import java.util.List;

/** 
* @ClassName: RouteHistoryImpl 
* @Description: TODO
* @author zengshuai shi
* @date 2015年8月20日 上午10:14:18 
*/
public class RouteHistoryImpl extends BaseSqlImp {

	/** 
	* @Description: TODO
	* @author zengshuai shi
	* @date 2015年8月20日 上午10:20:25 
	*/
	public RouteHistoryImpl(Context context) {
		super(context);
	}
	
	/**
	 * 
	* @Title: saveRouteHistory 
	* @Description: 保存路径规划历史
	* @param @param start
	* @param @param end    设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void saveRouteHistory(PoiItemInfo start, PoiItemInfo end) {
		RouteHistory info = new RouteHistory();
		info.setLanguage(DeviceUtil.getLanguage());
		info.setSearchtime(System.currentTimeMillis());
		info.setStartPoiName(start.getTitle());
		info.setStartPoiAdress(TextUtils.isEmpty(start.getAddress())?" ":start.getAddress());
		info.setStartPoiLat(start.getLatitude());
		info.setStartPoiLon(start.getLongitude());
		info.setEndPoiName(end.getTitle());
		info.setEndPoiAdress(TextUtils.isEmpty(end.getAddress())?" ":end.getAddress());
		info.setEndPoiLat(end.getLatitude());
		info.setEndPoiLon(end.getLongitude());
//		insert(info);
		try {
			mDbUtils.save(info);
		} catch (DbException e) {
			e.printStackTrace();
		}
		deleteDatabase();
	}
	
	/**
	 * 
	* @Title: deleteDatabase 
	* @Description: 超过20条删除
	* @return void    返回类型
	* @throws
	 */
	private void deleteDatabase() {
		int id = getId();
		if(id != -1){
			try {
				mDbUtils.deleteById(RouteHistory.class,id);
			} catch (DbException e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * 
	* @Title: getId 
	* @Description: 得到需要删除的ID
	* @param @return    设定文件 
	* @return int    返回类型 
	* @throws
	 */
	public int getId(){
//		List<RouteHistory> list = getAll(null, " 1=1 ", null, null, null, " searchtime DESC ", null);
		List<RouteHistory> list = null;
		try {
			 list = mDbUtils.findAll(Selector.from(RouteHistory.class).orderBy("searchtime",true));
		} catch (DbException e) {
			e.printStackTrace();
		}
		if(list != null && list.size() > 20){
			return list.get(0).getId();
		}else{
			return -1;
		}
	}
	
	/**
	 * 
	* @Title: getRouteList 
	* @Description: 获取路径规划历史列表
	* @param @return    设定文件 
	* @return List<RouteHistory>    返回类型 
	* @throws
	 */
	public List<RouteHistory> getRouteList() {
		try {
			return mDbUtils.findAll(Selector.from(RouteHistory.class));
		} catch (DbException e) {
			e.printStackTrace();
		}
		return  new ArrayList<>();
	}

	public void deleteAll(){
		try {
			mDbUtils.deleteAll(RouteHistory.class);
		} catch (DbException e) {
			e.printStackTrace();
		}
	}
}
